package com.jiangjiang.eshop.commodity.state;

import com.jiangjiang.eshop.commodity.dto.GoodsDTO;

/**
 * @ClassName GoodsState
 * @Description TODO
 * @Author jhw
 * @Date 2021/8/17 9:57
 * @Version 1.0
 **/

public interface GoodsState {

    /**
     * 执行商品状态流转到当前状态的业务逻辑
     * @param goodsDTO 商品
     */
    void doTransition(GoodsDTO goodsDTO);

    /**
     * 判断当前商品能否执行编辑操作
     * @param goodsDTO 商品
     * @return 判断结果
     */
    Boolean canEdit(GoodsDTO goodsDTO);

    /**
     * 判断能否执行审核操作
     * @param goodsDTO 商品
     * @return 判断结果
     */
    Boolean canApprove(GoodsDTO goodsDTO);

    /**
     * 判断能否执行上架操作
     * @param goodsDTO 商品
     * @return 判断结果
     */
    Boolean canPutOnShelves(GoodsDTO goodsDTO);

    /**
     * 判断能否之执行下架操作
     * @param goodsDTO 商品
     * @return 判断结果
     */
    Boolean canPullOffShelves(GoodsDTO goodsDTO);

    /**
     * 判断能否删除
     * @param goodsDTO 商品
     * @return 判断结果
     */
    Boolean canRemove(GoodsDTO goodsDTO);



}
